﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Talento21.Modelo;
using Talento21.Negocio.Servicio;
using System.Collections;

namespace Talento21.Pages.Competencia
{
    public partial class EditarCompetencia : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                if (Request.Params["IdCompetencia"] != null && Session["emp_rut"] != null)
                {
                    SrvCompetenciaEmp srvCompetenciaEmp = new SrvCompetenciaEmp();
                    InfCompetenciasEmp competencia;

                    competencia = srvCompetenciaEmp.ObtenerCompetenciasPorEmpresaYIdCompetencia(int.Parse(Session["emp_rut"].ToString()), int.Parse(Request.Params["idCompetencia"].ToString()));

                    if (competencia != null)
                    {
                        ddlCargos.SelectedValue = competencia.Id_Cargo.ToString();

                        txtIdCompetencia.Text = competencia.Id_Competencia.ToString();
                        txtNombreCompetencia.Text = competencia.Nombre;
                        txtDefinicionCompetencia.Text = competencia.Definicion;

                        ddlTipoCompetencia.SelectedValue = competencia.Id_Tipo_Competencia.ToString();

                        HttpContext.Current.Session["Niveles"] = competencia.InfNivelCompetenciaEmp.ToList();

                        ObjectDataSource1.SelectMethod = "ObtenerNiveles";
                        gvNiveles.DataBind();
                    }
                }
            }
        }

        protected void btnAgregarNiveles_Click(object sender, EventArgs e)
        {
            CompetenciasViewModel viewModel = new CompetenciasViewModel();
            viewModel.AgregarNivel(new Modelo.InfNivelCompetenciaEmp() { NumNivel = int.Parse(txtNumNivel.Text), Nombre = txtNombreNivel.Text, Descripcion = txtDescripcionNivel.Text });

            gvNiveles.DataBind();

        }

        protected void gvNiveles_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
            IDictionary paramsFromPage = e.Keys;
            if (paramsFromPage["NumNivel"] != null)
            {
                Modelo.InfNivelCompetenciaEmp nivel
                  = new Modelo.InfNivelCompetenciaEmp();
                nivel.NumNivel = Int32.Parse(paramsFromPage["NumNivel"].ToString());

                paramsFromPage.Clear();
                paramsFromPage.Add("NumNivel", nivel.NumNivel);
            }

        }

        protected void btnGuardarCompetencia_Click(object sender, EventArgs e)
        {

            try
            {
                InfCompetenciasEmp competencia = new InfCompetenciasEmp();
                competencia.Id_Competencia = int.Parse(Request.Params["IdCompetencia"]);
                competencia.Emp_Rut = int.Parse(Session["emp_rut"].ToString());
                competencia.Id_Tipo_Competencia = int.Parse(ddlTipoCompetencia.SelectedItem.Value);
                competencia.Id_Cargo = int.Parse(ddlCargos.SelectedItem.Value);
                competencia.Nombre = txtNombreCompetencia.Text;
                competencia.Definicion = txtDefinicionCompetencia.Text;

                for (int i = 0; i < gvNiveles.Rows.Count; i++)
                {
                    InfNivelCompetenciaEmp nivel = new InfNivelCompetenciaEmp();
                    if (gvNiveles.Rows[i].Cells[0].Text != "" && gvNiveles.Rows[i].Cells[0].Text != "0")
                    {
                        nivel.Id_Nivel = int.Parse(gvNiveles.Rows[i].Cells[0].Text);
                    }
                    nivel.NumNivel = int.Parse(gvNiveles.Rows[i].Cells[1].Text);
                    nivel.Nombre = gvNiveles.Rows[i].Cells[2].Text;
                    nivel.Descripcion = gvNiveles.Rows[i].Cells[3].Text;
                    nivel.Emp_Rut = int.Parse(Session["emp_rut"].ToString());
                    nivel.Id_Competencia = int.Parse(Request.Params["IdCompetencia"]);
                    competencia.InfNivelCompetenciaEmp.Add(nivel);
                }


                SrvCompetenciaEmp srvCompetenciaEmp = new SrvCompetenciaEmp();
                srvCompetenciaEmp.ActualizarCompetencia(competencia);

            }
            catch (Exception ex)
            {

                throw;
            }


        }





    }
}